%% MATEMÁTICAS FINANCIERAS
% Dr. René J. Meziat,
% Departamento de Matemáticas,
% Universidad de los Andes,
% Bogotá, Colombia.

%% CÁLCULO DE FRONTERAS EFICIENTES Y LÍNEAS DE MERCADO DE CAPITAL
% septiembre del 2006

%% OBTENCIÓN DE LA MATRIZ DE COVARIANZAS S
% Utlizaremos la función |xlsread| para leer la información de una hoja de cálculo tipo |Exel|. 
% Este procedimiento será de gran utilidad dado que la mayoría de datos
% financieros provienen de manejadores de bases de datos comerciales.
% Comenzaremos por leer una matriz de covarianzas S de una hoja de cálculo.
[S,TXT,RAW]=XLSREAD('prueba');
S
%%
% Para efectos de este análisis consideraremos los datos estadísticos de
% los activos de las siguientes compañías:
%%
% * American Airlines
% * Bethlehem Steel
% * General Electric
% * International Harvester
% * Philip Morris
% * Union Carbide
%%
% tomados a partir de diez medidas de rendimiento continuo compuesto, tomadas entre
% 1974 y 1983. Datos obtenidos del texto de S. Benninga, p. 151, presentado
% en las referencias.
%% OBTENCIÓN DEL VECTOR DE RETORNOS MEDIOS
% A continuación leemos un vector con los retornos medios R de los activos del análisis.
% Ellos se tomarán de la "segunda hoja" de la hoja de cálculo llamada |prueba|.
[R,TXT,RAW]=XLSREAD('prueba','Hoja2');
R
%% PROGRAMA MATEMÁTICO QUE SOPORTA LA TEORÍA.
% Acorde a la literatura especializada (ver referencias al final de este
% informe), para determinar los portafolios óptimos acorde a un criterio de
% mínimo riesgo para un rendimento dado |r|, debemos resolver el siguiente
% programa matemático, que tiene función objetivo cuadrática convexa y 
% restricciones lineales:

%%
% $$min_{x\in R^m} \frac{x^tSx}{2}\quad s.a.\quad\hat{u}\cdot
% x=1,\quad\bar{r}\cdot x=r,\quad PM$$
%%  
% Donde 
%%
% $$\hat{u}\in R^m$$


%% 
% es un vector compuesto de sólo unos, el cual podemos construir a partir del vector de datos leido |R|, 
% utilizando la siguiente instrucción abreviada: 
u=R*0+1
%% PARÁMETROS DE LA TEORÍA
% Los parámetros de la teoría son cuatro cantidades denominadas A, B, C y D.
% Definidas como formas cuadráticas a partir de la inversa de la
% matriz de covarianzas |S|. 
%%
% Estas son:
%%
% $$ A=\hat{u}^tS^{-1}\hat{u}, \quad B=\hat{u}^tS^{-1}\bar{r}, \quad C=\bar{r}^tS^{-1} \bar{r}$$ 
%%
% Empleando Matlab calculamos estas cantidades de manera inmediata. 
% Note el papel de la función |inv| para invertir matrices y el papel de la
% operación |traspuesta| que se realiza con el apóstrofe, por ejemplo: |A'|
% es la traspuesta de la matriz |A|. Así tenemos que:
A=u'*(inv(S)*u)
B=u'*(inv(S)*R)
C=R'*(inv(S)*R)
D=A*C-B^2
%%
% Claramente D no es una forma cuadrática, pero proviene del determinante
% de las dos ecuaciones lineales que permiten hallar los multiplicadores
% de Lagrange en el problema matemático -PM-. 
%% ANÁLISIS DEL PROGRAMA MATEMÁTICO
% Para resolver el programa cuadrático convexo dado en -PM-, tomamos su función Lagrangiana: 
%%
% $$ L(x,\lambda_1,\lambda_2)=\frac{x^tSx}{2}-\lambda_1(\hat{u}\cdot
% x)-\lambda_2(\bar{r}\cdot x) $$
%%
% que podemos derivar e igualar a cero como es usual en optimización, para
% obtener las siguientes ecuaciones descritas en forma vectorial:
%%
% $$ Sx=\lambda_1\hat{u}+\lambda_2\bar{r}\quad EQ  $$
%%
% Multiplicando por la inversa de la matriz de covarianzas |S|, por la
% izquierda, sobre ambos lados de la ecuación -EQ- encontramos:
%%
% $$ x=\lambda_1S^{-1}\hat{u}+\lambda_2S^{-1}\bar{r}\quad SL $$
%
%%
% y utilizando las ecuaciones:
% 
%%
% $$ x\cdot\hat{u}=1,\quad x\cdot\bar{r}=r $$
%
%%
% que provienen de las restricciones del programa -PM-, encontramos 
% la siguiente pareja de ecuaciones lineales, cuyas incógnitas son
% los multiplicadores de Lagrange del programa -PM-. Así tenemos:
%%
% $$ A\lambda_1+B\lambda_2=1,\quad B\lambda_1+C\lambda_2=r $$
%%
% cuya solución da lugar a las siguientes expresiones:
%%
%
% $$\lambda_1=\frac{C-rB}{D},\quad\lambda_2=\frac{Ar-B}{D}\quad ML $$
%
%%
% las cuales a su vez permiten encontrar explícitamente el vector de
% inversiones |x| mediante las relaciones -SL- dadas más arriba.
%% CÁLCULO DE LA FRONTERA EFICIENTE
% Una vez hemos estimado los parámetros A, B, C y D del problema, procedemos
% a delinear la frontera eficiente, para ello utilizamos la fórmula
% explícita:
%%
% $$ \sigma^2(r)=\frac{Ar^2-2rB+C}{D}\quad FR$$
%%
% que se obtiene multiplicando por la traspuesta del vector óptimo |x|,
% por el lado izquierdo, ambos lados de la ecuación -EQ-.
%% DELINEACIÓN DE LA FRONTERA EFICIENTE
% Utilizando la fórmula -FR- podemos delinear sobre una gráfica de riesgo
% contra retorno la frontera eficiente que corresponde a los portafolios
% óptimos, que podemos formar con los activos de nuestro mercado de capitales. 
%% INSTRUCCIONES GRÁFICAS
% Creamos un vector de 100 posiciones con los 100 valores, igualmente
% espaciados, que podemos tomar entre cero y un rango apropiado para el 
% retorno máximo de nuestro análisis,  que aquí tomaremos como el doble del
% máximo retorno medio de los activos disponibles.
x=linspace(0,2*max(R));
y=(A*x.^2-2*B*x+C)/D;
plot(y,x)
xlabel('riesgo como varianza')
ylabel('retorno')
title('frontera eficiente')
%% UBICACIÓN DE LOS ACTIVOS EN EL DIAGRAMA RIESGO VS. RETORNO
% Sobre el mismo dibujo de la frontera eficiente, pondremos los activos  
% que conforman nuestro mercado de acuerdo a sus medidas de riesgo y
% rendimiento, señalando que el riesgo lo medimos con la varianza de cada
% activo. Note que la varianza del activo -i- ocupa la -i-ésima posición 
% en la diagonal de la matriz de covarianzas, esta es S(i,i).
hold on
DTA=['A';'B';'G';'I';'P';'U'];
for i=1:6
    plot(S(i,i),R(i),'+g')
    text(S(i,i)+0.01,R(i),DTA(i))
end

%% VÉRTICE DE LA FRONTERA EFICIENTE
% Con los parámetros A y B de la teoría, podemos señalar de una forma muy
% clara el vértice de la frontera eficiente. Usted debe observar que la 
% ecuación -FR- corresponde a una parábola con vértice en el punto de coordenadas
% (1/A,B/A) sobre el plano varianza v.s. rendimiento. La siguiente
% instrucción dibuja ese punto con color rojo. 
plot(1/A,B/A,'or')
%% SIGNIFICADO DEL VÉRTICE DE LA FRONTERA EFICIENTE
% El punto de coordenadas (1/A,B/A) señalado en la gráfica, corresponde al
% portafolio con menor riesgo que podemos encontrar entre todos los
% portafolios factibles que podemos formar con los activos del mercado bajo 
% estudio. El cociente B/A nos dice el rendimiento correspondiente a dicho 
% portafolio y el cociente 1/A su varianza.
%% SELECCIÓN DE PORTAFOLIOS EFICIENTES SOBRE LA FRONTERA EFICIENTE
% El usuario debe intorducir el rendimiento del portafolio óptimo que le 
% interesa seleccionar. Para efectos de este tutorial, asignaremos el valor 
% predeterminado:
r=0.4;
%%
% Observamos que esta cantidad debe estar dentro de el rango apropiado
% para los rendimientos de los activos involucrados. En este caso lo hemos 
% fijado como el doble del retorno máximo observado:
2*max(R)
%% 
% Tomando el valor r=0.4 como el rendimiento del portafolio óptimo que 
% nos interesa, podemos dibujar su posición sobre la frontera eficiente
% utilizando la fórmula -FR-. 

plot((A*r^2-2*B*r+C)/D,r,'om')
%%
close

%% GRÁFICA DE LA FRONTERA EFICIENTE HECHA SOBRE UN PLANO DE RIESGO V.S.
%% RETORNO, EN EL QUE TOMAMOS LA DESVIACIÓN ESTÁNDAR COMO MEDIDA DE RIESGO
% Aquí dibujaremos la frontera eficiente empleando la desviación estándar como
% medida de riesgo. Para ello tomamos la raíz cuadrada de la función cuadrática dada en 
% la expresión -FR-. Como estamos evaluando raíces cuadradas, tendremos un poco
% de precaución y revisaremos que los argumentos sean simepre valores
% positivos.

for i=1:100
    if (A*x(i)^2-2*B*x(i)+C)/D>0
        z(i)=sqrt((A*x(i)^2-2*B*x(i)+C)/D);
    else
        z(i)=0;
    end
end
plot(z,x)
hold on
xlabel('riesgo como desviación estándar')
ylabel('retorno')
title('frontera eficiente donde el riesgo es la DVSTD')
%% REPRESENTACIÓN DE LOS ACTIVOS EN EL DIAGRAMA DE DESVIACIÓN ESTÁNDAR V.S. RETORNO
% Ahora dibujaremos los activos en el mismo diagrama de desviación estándar
% v.s. retorno.
% Note que la desviación estándar de cada uno de ellos la obtenemos
% tomando la ráiz cuadrada de sus varianzas, las cuales a su vez aparecen
% en la diagonal de la matriz de covarianzas. 
for i=1:6
    plot(sqrt(S(i,i)),R(i),'+g')
    text(sqrt(S(i,i))+0.02,R(i),DTA(i))
end  
%% TASA DE INTERÉS Y CÁLCULO DEL PORTAFOLIO DE MERCADO CORRESPONDIENTE
% La Teoría de la Cartera nos ofrece ventajas muy importantes para responder 
% preguntas concretas en finanzas. En concreto, si nos proponen una tasa de 
% interés determinada, podemos encontrar el portafolio de mercado que le 
% corresponde, empleando la regla de tangencia que debe cumplir dicho portafolio.
% Esta regla de tangencia se describe de una manera muy cómoda a través de
% la siguiente relación lineal:
%%
% $$ \gamma Sx=\bar{r}-t\hat{u},\quad\gamma=\frac{\bar{r}_P-\tau}{\sigma_P^2}\quad RL $$
%%
% de manera que si nos proporcionan la tasa de interés $\tau$, podemos
% encontrar los valores para el portafolio de mercado correspondiente.
% Basta utilizar las siguientes fórmulas, que se obtienen fácilmente de
% las ecuaciones en -RL-. 
%% 
% $$ \bar{r}_P=\frac{C-\tau B}{B-\tau A},\quad\sigma_P^2=\frac{\bar{r}-\tau}{B-\tau A} RO$$
%%
% Empleando estas fórmulas, calcularemos el rendimiento y la varianza del 
% portafolio de mercado (portafolio óptimo) en función de la tasa de interés dada:
tasa=0.102;
retorno=(C-tasa*B)/(B-tasa*A)
varianza=(retorno-tasa)/(B-tasa*A)
desviacion=sqrt(varianza)
%% DIBUJO DE LA TASA DE INTERÉS Y LA LÍNEA DE MERCADO
% Dibujamos aquí, con rojo, el punto correspondiente a la tasa de interés sobre el eje de rendimiento.
% Cuidamos que el valor calculado para el retorno del portafolio de mercado
% sea mayor al de la tasa dada, porque en caso contrario no nos encontramos
% en el rango de valores posibles para utilizar como tasas de interés. 
% Esto se debe a que la pendiente de la frontera eficiente tiene dos
% asíntotas cuando se representa sobre el plano de retorno v.s. desviación
% estándar. 
plot(0,tasa,'or')
if retorno>tasa
    plot(desviacion,retorno,'or')
else
    plot(0,tasa,'om')
end
%% DIBUJO DE LA LÍNEA DE MERCADO DE CAPITAL
% Dibujaremos ahora la línea de mercado de capital que une a la tasa de
% interés dada, sobre el eje retorno, con el punto del portafolio de
% mercado, que se encuentra sobre la frontera eficiente. Note que esta
% línea es tangente a la frontera eficiente justamente en el punto que
% corresponde al portafolio de mercado. Esta condición geométrica es la
% definición alternativa para los portafolios eficientes, además es la guía
% para obtener las condiciones de primer orden dadas en la expresión -RL-.
w=(x-tasa)*(desviacion)/(retorno-tasa);
for i=1:100
    if w(i)<0
        w(i)=0;
    end
end
plot(w,x,'m')
%%
close
%% CÁLCULO DE LAS INVERSIONES DEL PORTAFOLIO DE MERCADO
% Es importante conocer, no sólamente la ubicación del portafolio de mercado
% en el diagrama riesgo v.s. rendimiento, sino que además nos interesa
% conocer el conjunto de inversiones que lo definen. Para ello debemos
% utilizar las fórmulas -SL- y -ML- para los
% multiplicadores de Lagrange, obteniendo la expresión:
%%
% $$ x=\frac{C-rB}{D}S^{-1}\hat{u}+\frac{Ar-B}{D}S^{-1}\bar{r} $$
%%
% o alternativamente la condición de primer orden -RL- que nos proporciona la
% solución:
%%
% $$x=\frac{\sigma^2_PS^{-1}(\bar{r}-\tau\hat{u})}{\bar{r}_p-\tau}, $$
%%
% con la cual podemos implementar las instrucciones que dejan en la variable
% |optimos| el vector de las inversiones que componen el portafolio de
% mercado.
optimos1=(inv(S)*(R-tasa*u))*varianza/(retorno-tasa)
optimos2=(inv(S)*u)*(C-B*retorno)/D+(inv(S)*R)*(A*retorno-B)/D
%% CÁLCULO DE LOS BETAS
% Para calcular los |betas| correspondientes a cada activo, utilizamos
% la definición básica:
%%
% $$ \beta_{Q,P}=\frac{\bar{r}_Q-\tau}{\bar{r}_P-\tau}$$
%%
% que da lugar a las siguientes instrucciones:
beta=(R-tasa)/(retorno-tasa);
plot(beta,R);
text(beta,R+0.005,DTA);
hold on
for i=1:6
    plot(beta(i),R(i),'or')
end
xlabel('betas')
ylabel('retornos')
%%
close
%% FORMA ALTERNATIVA PARA EL CÁLCULO DE LOS BETAS
% Como una forma alternativa para estimar los betas, podemos utilizar la
% definición:
%%
% $$\beta_{Q,P}=\frac{\sigma_{Q,P}}{\sigma_P^2}=\frac{y^tSx}{x^tSx} .$$
%%
% De esta manera implemementamos las siguientes operaciones:
for i=1:6
    activo=zeros(1,6);
    activo(i)=1;
    beta(i)=activo*S*optimos1/varianza;
end
plot(beta,R);
text(beta,R+0.005,DTA);
hold on
for i=1:6
    plot(beta(i),R(i),'or')
end
xlabel('betas')
ylabel('retornos')
%%
close
%% CÁLCULO DE LA TASA DE INTERÉS A PARTIR DE UN PORTAFOLIO DE MERCADO
% Una labor muy importante en finanzas es proponer tasas de interés a
% partir de la información de un portafolio de mercado. 
% Para ello tomaremos el nivel de redimiento r=0.25
r=0.25;
%%
% con el cual estimaremos la desviación estándar del portafolio, 
% utilizando la raíz cuadrada de la fórmula -FR-:
desviacion=sqrt((A*r^2-2*B*r+C)/D)
%% DIBUJO DE LA FRONTERA EFICIENTE
% Dibujaremos la frontera eficiente, pero empleando la desviación estándar como
% medida de riesgo:
for i=1:100
    if (A*x(i)^2-2*B*x(i)+C)/D>0
        z(i)=sqrt((A*x(i)^2-2*B*x(i)+C)/D);
    else
        z(i)=0;
    end
end
plot(z,x)
hold on
xlabel('riesgo como desviación estándar')
ylabel('retorno')
title('frontera eficiente donde la desviación estándar mide al riesgo')
%% CÁLCULO DE LA TASA DE INTERÉS A PARTIR DEL PORTAFOLIO DE MERCADO
% Utilizando la fórmula del rendimiento ótpimo -RO-, podemos hallar la tasa
% de interés:
%%
% $$\tau=\frac{\bar{r}_PB-C}{\bar{r}_PA-B}  $$
%% 
% de manera que podemos utilizar la siguiente instrucción para estimar la
% tasa de interes:
tasa=(r*B-C)/(r*A-B)
%%
% correspondiente al portafolio de mercado
[r,desviacion]


%% DIBUJO DE LA LÍNEA DE MERCADO DE CAPITAL
% Sobre la frontera eficiente dibujaremos la línea de mercado de capital,
% señalaremos la tasa de interés calculada y el portafolio de mercado
% propuesto por el usuario.
w=(x-tasa)*(desviacion)/(r-tasa);
for i=1:100
    if w(i)<0
        w(i)=0;
    end
end
plot(w,x,'m')
plot(desviacion,r,'or')
plot(w,x,'m')
plot(0,tasa,'or')
title('línea de mercado de capital')
%% BIBLIOGRAFÍA
%%
% * Capinski, Marek, Mathematics for finance : an introduction to financial engineering, New York, Springer, 2003. 
% * S. Benninga, Financial Modeling, MIT Press, 2000.










    



 













